home *** CD-ROM | disk | FTP | other *** search
- This directory tree comprises the source code from
- the book "UNIX Network Programming" by W. Richard Stevens,
- published by Prentice Hall, 1990.
-
- ---------------------------------------------------------------------
- LIMITS OF LIABILITY AND DISCLAIMER OF WARRANTY
-
- The author and publisher of the book "UNIX Network Programming"
- have used their best efforts in preparing this software.
- These efforts include the development, research, and testing
- of the theories and programs to determine their effectiveness.
- The author and publisher make no warranty of any kind, express
- or implied, with regard to these programs or the documentation
- contained in the book. The author and publisher shall not be
- liable in any event for incidental or consequential damages in
- connection with, or arising out of, the furnishing, performance,
- or use of these programs.
- ---------------------------------------------------------------------
-
- As stated in the Preface of the book, the source code was
- tested under 4.3BSD on a VAX and AT&T's System V/386 Release 3.2
- on a Compaq 386/20. There may be some comments and Makefile rules
- for Xenix since I started porting some of the software to Xenix.
- However, I found the existing Xenix socket libraries so poor that
- I never finished.
-
- To start, check the files "systype.sh" and "systype.h"
- in either the "lib" or "lib.s5" directory. These may have to
- be modified for your system. Next, do a "make" in either of
- these directories to make the library "libnet.a". This library
- is required to make most of the other programs (minimally because
- the error functions - err_XXX() - are in this library and these
- error functions are used by almost every program).
-
- Note that there are a lot of links between files in
- different directories. For example, the directories "fd" and "fd.s5"
- both use the same Makefile and main programs. Only the files
- "sendfile.c" and "recvfile.c" in these directories are different
- between 4.3BSD and System V.
-
- The directories are as follows:
-
- asyncio The asynchronous I/O example from Section 6.12.
-
- fd The file descriptor passing example for 4.3BSD from
- Section 6.10.
-
- fd.s5 The file descriptor passing example for System V
- from Section 7.10.
-
- inettime The Internet time and daytime clients from Section 10.2.
-
- ipc The IPC examples from Chapter 3.
-
- lib The library of common functions for 4.3BSD. These functions
- come from all over the book. Specifically:
-
- lib/daemon.c daemon_start() function - Sec. 2.6.
- lib/dgsendrecv.c Reliable message send/receive - Sec. 8.4.
- lib/error.c Error handling - Appendix A.3.
- lib/hosterror.c Sec. A.3.
- lib/idpopen.c Sec. 8.3.
- lib/lock.c Lock functions for lpr/seqno.c - Sec. 13.3.
- lib/netdefs.h Used by lib/XXXopen.c and tftp/netXXX.c.
- lib/nspipe.c Named stream pipe function - Sec. 6.9.
- lib/pty.c Pseudo tty routines - Sec. 15.4.
- lib/readline.c Sec. 6.6.
- lib/readn.c Sec. 6.6.
- lib/rresvport.c (Not in book; needed for WIN/TCP)
- lib/rtt.c Round-trip timing functions - Sec. 8.4.
- lib/sigchild.c daemon_start() SIGCLD handler - Sec. 2.6.
- lib/spipe.c Stream pipe function - Sec. 6.9.
- lib/sppopen.c Sec. 8.3.
- lib/tcpopen.c Sec. 8.3.
- lib/timer.c Timing functions used in TFTP - App. A.4.
- lib/ttymode.c Copy terminal mode - Sec. 15.5.
- lib/ttyraw.c Set terminal raw mode - Sec. 15.5.
- lib/udpopen.c Sec. 8.3.
- lib/writen.c Sec. 6.6.
-
- lib.s5 The library of common functions for System V.
- See the list above for the "lib" directory. The differences
- are: idpopen.c, sppopen.c, and sigchild.c aren't in "lib.s5"
- and "lib.s5" contains semaph.c (the simpler semaphore
- operations - Sec. 3.10).
-
- lock The record locking and file locking functions from
- Section 3.2.
-
- lpr The 4.3BSD line printer client - Section 13.3.
-
- net The simple client-server examples from Section 6.6.
- Also the socket option example from Section 6.11 and
- the host entry example from Section 8.2.
-
- net.s5 The simple client-server examples from Section 7.6.
- Also contains a program to print all the stream modules
- on a given stream, and a program to print all the
- TLI "struct t_info" values for your implementation.
-
- nspipe.s5 The named stream pipe example from Section 7.9.
-
- ping The 4.3BSD Internet ping program from Section 11.2.
-
- rcmd The rcmd() function and its rshd server from
- Section 14.3. Also the ruserok() function from
- Section 9.2.
-
- record The recording example from Sections 15.3 - 15.6.
-
- record.s5 The System V version of the recording example.
-
- reliable The reliable message client and server from Section 8.4.
-
- rlogin The 4.3BSD rlogin client and rlogind server from
- Sections 15.11 and 15.12.
-
- rmt The remote tape server from Section 16.4.
-
- rpc.courier/timedate The Xerox Courier RPC example from Section 18.4.
- Note that the Makefile will certainly have to be
- modified, depending where you have installed the
- Courier compiler, library, and include files.
-
- rpc.sun/timedate The Sun RPC example from Section 18.3.
- Note that the Makefile will certainly have to be
- modified, depending where you have installed the
- Sun RPC compiler and library.
-
- select The higher precision timer, using the select system
- call, from Section 6.13.
-
- tftp The TFTP client and server from Chapter 12.
-
- xnsecho The XNS IDP echo client from Section 11.3.
-
- Please send me any bug fixes, comments, suggestions, etc.
-
- Richard Stevens
- Health Systems International, New Haven, CT
- stevens@hsi.com
- ... { uunet | yale } ! hsi ! stevens
-